package com.own.component.util.excel.util.read.util;

import com.own.compoent.util.zip.unzip.model.BaseZipFileModel;
import com.own.compoent.util.zip.unzip.util.UnzipUtil;
import com.own.component.util.excel.util.read.model.ResolveFileModel;

import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * ResolveZipUtil
 *
 * @author chenxueli
 * @date 2022-10-07 20:55:00
 */
public class ResolveZipUtil {

    /**
     * 解析zip文件
     *
     * @param fileModel 文件信息
     * @return 解析后的内容
     */
    public static List<ResolveFileModel> unzip(ResolveFileModel fileModel) {
        // 前置处理
        if (".zip".equals(fileModel.getSuffix())) {
            // 解压文件
            var model = new UnzipUtil().unzip(fileModel.getInputStream());
            // 遍历第一层的文件信息
            return model.getChildren()
                    .stream()
                    .filter(item -> item instanceof BaseZipFileModel)
                    .filter(item -> item.getFilename().endsWith(".xls") || item.getFilename().endsWith(".xlsx"))
                    .map(item -> new ResolveFileModel((BaseZipFileModel) item))
                    .collect(Collectors.toList());
        }
        return Collections.singletonList(fileModel);
    }

}
